
package cz.czu.pef.DataModelling.service.api;

import cz.czu.pef.DataModelling.dao.DaoBasic;
import cz.czu.pef.DataModelling.domainObjects.IdObject;
import cz.czu.pef.DataModelling.entityObjects.IdPersistenceEntityObject;


/**
 * Provides:
 * - basic DAO operations on given Entity
 * - composed DAO operations with shared implementation logic
 * 
 * @author Rostislav Stříbrný
 *
 * @param <T>
 */
public interface AbstractWrapperService<TD extends IdObject, TE extends IdPersistenceEntityObject> extends DaoBasic<TD>
{

  /**
   * Indicates whether given entity can be removed or still is referenced by other related entities.
   * 
   * @param entity
   * @return boolean
   */
  boolean canBeRemoved(TD entity);
}
